Network ~ComputerとComputerをつなぐもの~
from IT技術の全体感
https://gyazo.com/16900cade413dfa141134aec06014a43
/inteltank/Network ~ComputerとComputerをつなぐもの~ - Google スライド
https://gyazo.com/09b5ea32a8c216d8e88bfabdbeaefa65 https://docs.google.com/presentation/d/1ZlOXr0Dgypp2ANz2ZYCbV5YiNTBWhJkfza_W4KrcgcY/edit#slide=id.gb83e38e90d_0_504
Networkにおいて、IT知識として理解しておくと良いこと
ネットはTCP/IPにてなりたっている
以上。
他の情報は、TCP/IPだから…という観点で説明がつく
Network Slide Outline
Network関連の知識
Networkの概要
世界はCableとRouterで繋がっている
Internetはいくつかの層に分けて管理される
パケット通信/Net(網目)構成で、通信環境を安定的に提供
通信一つも、数多の技術の結晶
デジタルとアナログをつなぐもの「フーリエ変換」
ネット回線は道路に似ている
実はComputer内部も、Computer同士も「通信」している
ネットはTCP/IPにてなりたっている
世界はCableとRouterで繋がっている
コラム)Subnetmaskを使って、直接通信する
IP addressはComputer界の住所
IP addressは数字だから安価&高速な通信回線が提供できる
IP address 枯渇問題とIPv6
URL(domain)とDNSがあるからIP addressを覚えなくて良い
会社における基本的で簡単なネットワークセキュリティ
不特定多数と長距離でつながるからこそSecurity / Accuracyを意識する
受信したDataの正しさを保証する仕組み
通信傍受を防ぐためにSSL(TLS)通信
HTTP通信では、あなたが誰か?Serverは判断できない
豆知識/お役立ち情報
快適なネットライフのために重視したいPoint
モバイルWifiより固定回線が良い
ビデオ通話で回線が不安定になる理由
NURO光はなぜ速い
ネットの遅さが改善されるかも?DNS serverの手動登録
Internetを身近に感じる HandsOn Workshop
Network経路を表示するtraceroute
HTTP responseのHeader情報を見てみる
図解!ネットワークの7層を実務に当てはめてみた - Qiita
TCP/IPとOSI:2つのモデルの違いは何ですか? | FSコミュニティ
Networkは現代の「Computer」「Software」のInfrastructure
Infrastructureは日本語では「基盤」
例えば水道、ガス、電気、Internet
基盤なので普段は意識しない
しかし、有事に影響を受ける
基盤にも不具合は起きる(滅多に起きないはず)
避難訓練、防災バッグのように「有事を想像して事前に準備」することは必要
Networkは「ComputerとComputer」をつなぐもの
Computer内でも使われる
Network、広く言えば「通信」はComputerの基礎基本
物理的に分断されていれば必ず「つなぐ」必要がある
「つなぐ」限りはそこに通信が発生する
CPU ⇆ Memory, CPU ⇆ GPU ⇆ Display
Computerは「全てのパーツが正常に動く」ことが前提
ボトルネック
ボトルネック(ネック)とは - IT用語辞典 e-Words
ITの分野では、機器やソフトウェア、システム、ネットワークなどを構成する要素のうち、系全体の処理や伝送の最大速度を決定付ける、他よりも性能の劣った、あるいは負荷が集中して混雑している要素のことをボトルネックという。
「PCが重い」「急に動かなくなった」はよくあること
たった一つの小さなPartsが大きく性能劣化を起こす世界
Computerの性能は最底辺に依存するのです
Computerを使う限り「Network不具合」の影響は起こりうる
不具合起こると大変
Infraは普段意識されないため…無知であることが多い
専門家の人数が少ないため、高需要で高価格になりがち
コラム)Infraこそみんな学ぶと良いと思うsawachin.icon
Application(Infraの対極)は1,2年単位でtrendが変わる
数年前までRuby on Railsが主流だったが、今はいろんなFrameworkが各所で使われている
Infraは、身につけた知識が長い期間活きる
数年どころか数十年使える
Infraは得てして巨大 & 利用者が多いので進化がゆっくり
進化したとしても後方互換を備えているため、知識を使い続けられる
(IP address 枯渇問題とIPv6とかまさにsawachin.icon)
Applicationよりも「Computerの原理原則」に近い知識であるため、各所で活きる
Computer/Networkはフラクタル構造
フラクタル - Wikipedia
フラクタル(仏: fractale, 英: fractal)は、フランスの数学者ブノワ・マンデルブロが導入した幾何学の概念である。ラテン語の fractus から。図形の部分と全体が自己相似(再帰)になっているもの
スイミーみたいな感じ
https://gyazo.com/616e87b7cd73e5d9f38c66bf8aae4b11 http://www.kogakusha.com/book/187/
魚が集まって魚を作っている
Computer/Networkも同じ
本質的な少しのRule, 仕組みが億/兆という規模で連なることで、大きなものを作っている
ComputerはDataとProcessingの集合体
Dataは突き詰めると「0,1」
Processingは「論理ゲート(AND/ OR/ NOT……)」
参考)論理ゲートをPythonで作ってCPUを学ぶ(第1回) - Qiita
Network, Codingのような「すごく小さな仕組み」を多面的に深く理解することが、大規模Softwareの理解につながる
コラム)論理ゲートにはたくさん種類があるがNANDのみで全ての論理回路は実現できる
NAND論理の完全性と言います
否定論理積 - Wikipedia
一般に、いくつかの限られた種類の論理演算を任意個組み合わせることにより、任意のブール関数を構成可能であることを、その演算の組は functionally complete であるという(詳細は英語版記事 en:Functional completeness を参照)。ANDとORはどちらも単調であるため「ANDとOR」だけでは完全にならず、NOTを加える必要がある。一方「ANDとNOT」や「ORとNOT」は完全であり、ANDとNOTの組合せであるNAND(や、NOR(否定論理和))はそれひとつだけで完全である。以下にNOT・AND・ORのNANDのみによる構成を示す。
本来、論理回路は「AND」「OR」「NOT」の3つを組み合わせて作る必要がある
が、実はNANDだけで作れる
論理回路はProcessingの部分。つまり「CPU」と読み替えることができる
このPageで学ぶことは大きく1つだけ
ネットはTCP/IPにてなりたっているということ
TCP/IPの話を聞く前に、まずは前提知識から理解していく
世界はInternetで繋がっている
これは以下で読み替えられる
「世界はCableとRouterで繋がっている」
そもそも「Internet」とはなにか
元々は軍事研究用Network「ARPANET」
1969 年にアメリカ国防総省で作られた後、
規模が拡大し…世界中をつないでいる
Internetは世界中を繋ぐ「CableとRouter」の総称
引用元)Internetはいくつかの層に分けて管理される
イメージ図
https://gyazo.com/6b64873d346b63a65efdcb1956eec57c
規模が大きい
1組織で管理できるモノじゃない
Internetはあまりにも規模が大きいので3層に分類して共同管理している
引用元)【図解】初心者にも分かるインターネット(ISP)やネットワークの仕組み 〜IPアドレスとルーティングについて〜 | SEの道標
IANA の管理のもと、世界中の ISPが相互接続して成り立っている
Internet Service Provider
ISPの中には「大手」「中小」が存在している
アメリカ大手がTier 1 Networkを構成し、
(日本では米企業を買収したNTT コミュニケーションズ・ソフトバンクの2社がTier1)
大手ISPがTier 2 Network を構成し、
中小ISPがTier3 Networkを構成している
https://gyazo.com/6d5f627584369e35e193922f7ae55e04
引用元)Tier 1 network - Wikipedia
コラム)3層。「お金の掛け方」が全然違う
Tier1は世界を支える。一番お金をかける
Tier2…Tier3…とInternetの末端になると「利用者」が減るので、お金もかけられない
ネット回線は道路に似ているのでたとえてみると…
Tier1は高速道路
Tier2は幹線道路
Tier3は公道
もちろん私道もある
Computerの性能は最底辺に依存するので、私道(ラストワンマイルと呼ばれる)がクソだと、通信回線が重くなる
ネット回線が「遅くなる理由」は道路を想像してみるとわかりやすい
引用元)ネット回線は道路に似ている
https://gyazo.com/2273a940baaa9857840f4eb57f72a577
道が広い(例えば光ファイバー)と混まない
制限速度が大きい(NURO光はなぜ速い#5f4cd4de84eb3a000081ab0b)ほど早く届く
数(同マンション利用者)が多いと混む
中継点(同ISP User)が多いと混む
コラム)家のネット環境を構築するときに読みたい資料
快適なネットライフのために重視したいPoint
ネットの遅さが改善されるかも?DNS serverの手動登録
NURO光はなぜ速い
世界中の全体感・考え方がわかったところで、「物理的にどうつないでいるか」の話をする
Cableには光ファイバー を利用している
海があっても、海底ケーブルが繋いでいる
参考)海底ケーブル Map
Submarine Cable Map
https://gyazo.com/831d590d29c9da9229306af11ec72eb5
光ファイバーは速いのではなく、たくさん送れる。
光ファイバーを束ねて利用することで世界中の人が高速通信を教授できている
光ファイバーが速い理由とその仕組み・構造・材質について楠リカがやさしく解説
よく「光信号は光だから、すごく速いんでしょ?」という声も耳にしますが、これは間違い。
光も電気も、そのもののスピードには大きな差はありません。
それではなぜ光信号を使った光回線のほうが速いのかと言えば、「光信号は電気信号に比べて1と0の切り替えが高速でできるから」というのが理由。
つまり、電気の変調よりも光の点滅のほうがスピードが速いんです。
具体的に言えば、電気信号は1秒間に約100億個の信号が送れるのに対し、光信号は1秒間に1兆個もの信号を送ることが可能。
そのため、光信号は電気信号に比べて、短時間でより大容量の通信を行うことができるのです。
光ファイバー…光と聞くと「世の中で一番速い!」と言うことで、そこが利点と思いがちsawachin.icon
光自体は1種の電磁波(つまり電気)。速さは変わらない
Cableだけでは「送りたい相手にDataを送る」ことはできない
うまく相手に届けるための仕組みが必要
それがRouter
Routerが適切に誘導することで「任意の相手と通信できる」ようになっている
CableとCableが繋がるHub部分にRouterが存在する
(RouterのImageは以下)
https://gyazo.com/603a27223d7717c82923e0ddcbdc83e7
参考)IP addressは数字だから安価&高速な通信回線が提供できる
Router + Cableによる仕組みはとても簡単
従来の回線交換の仕組みでは以下の図のような構成になっていた
https://gyazo.com/6c1640f0142763feda90d86beb07dc25
真ん中の交換機が死ぬと、全員Netがつながらなくなる(参考:単一障害点)
そもそも、複数端末を繋ぐことに向いていない
参考)回線交換 - Wikipedia
回線を流れるデータ量にかかわらず、複数の端末による伝送路などの共有ができないため、利用効率が悪い。
物理的な伝送路を物理的な方法により交換する場合、交換設備が物理的に大型になる
以下のような構成にすることで「中央集権での管理」なくComputerとComputerを繋ぐことができる
https://gyazo.com/6b64873d346b63a65efdcb1956eec57c
ちなみに、回線交換とは
回線交換はパケット通信と比較で使われる表現
STORY 04:回線交換とパケット交換|CHAPTER 1|IIJインターネット図鑑|IIJ
例え話をしていなかったとしても、回線が繋がっている間はずっと専有されている状態で、他の誰かが使うことはできません。なので、専有されている回線に電話をかけても「通話中」になってしまいます。この通信方法が「回線交換」というものです。
https://gyazo.com/37800fbdc865e6cb2740d7af0290a97c
これに対して、「パケット交換」という通信方法が1960年代に提唱されました。これによって複数の通信を1つの回線で共用することが可能になり、通信の効率化が進みました。そして、これを最大限活用したのがインターネットという通信方法なのです。
となりのトトロで出てくる電話は回線交換sawachin.icon
家に電話があることがとても珍しい時代
交換手と呼ばれる人が、「AさんとBさんを繋ぐ」ようにしてくれる
翻って、パケット通信とは?
以下Pageを一緒に読みましょう
STORY 04:回線交換とパケット交換|CHAPTER 1|IIJインターネット図鑑|IIJ
ということで現時点でのSummary
1. Internetとは光ファイバー + Routerで作られた「全世界の人をつなぐ」仕組み
2. Networkは「道路」に喩えて理解するとわかりやすい
ここからはより具体的な技術の話をする
車を運転するとき、「いきたい場所」にたどり着くまで必要なものは以下
1. 車が走れる道
2. みんなで一緒に道路を使うルール(例:左側通行・制限速度)
3. たどり着く場所の住所
4. 分岐点での看板
「1.」は話したので、「2.」,「3.」,「4.」を話していく
2. みんなで一緒に道路を使うルール(例:左側通行・制限速度)
TCP, IP, IEEE, MACアドレス…などなどたくさんあります。
全てまとめてprotocolという
protocolにて以下2つも定義されているため、まずprotocolを理解していく
3. たどり着く場所の住所
4. 分岐点での看板
protocolは他のTechnology同様いくつか種類がある
目的に合わせて選ぶ
protocolが100種類あったときに、「どのprotocolとどのprotocolは代替可能なのか?」は大事な観点
この「代替可能性」がわかりやすいのがOSI参照モデル
OSI参照モデルという「Computer間の通信技術」を7層に分けたModelがある
from:通信一つも、数多の技術の結晶
https://gyazo.com/e4e882fa8caff8b085c26eb6e3fe0c46
引用元)OSI参照モデルまとめ - Qiita
「Computer間の通信を安心・安全に行う」のは想像以上に難しい
何百kmも離れた
数億、数十億のComputerが繋がれた
そんなInternetの中を「安心・安全」にするためには技術がたくさん使われている
7層。それぞれになっていることが違う
ざっくりは以下のようになっている
1. 物理層 物理的にどういうものを通るの?(光ファイバ?無線LAN?)
2. Datalink層 物理線の中で、ソフトウェア的にどうデータを送る?(無線LANの規格 etc)
3. Network層 通信線は途中で何度も分岐するけど…「通信経路」をどう選ぶ?(IP)
4. Transport層 相手にdata送るときの「error(dataが壊れちゃったetc)」をどう防ぐ?(TCP)
5. Session層 大きいData送るのに時間かかるけどどうやる?(TCP)
6. Presentation層 送るデータは「どんな言語(文字コードなど)、どんな形式」で送られている?
7. Application層 PC,serverではどんな形式で読み込み/書き出しされる?(HTTP)
上記7層、普段は意識しなくていいようになっているsawachin.icon
HTTPを使えば、残り6層は意識せずに使えるようになっている
上記7層で言うと、「Network層」が、「たどり着く場所の住所」と「分岐点での看板」を決めている
だからIPを理解することで、通信が大体理解できる
3. たどり着く場所の住所
IPとはInternet Protocolのこと
(まんまですねsawachin.icon)
IP addressはComputer界の住所です。
Internet Protocol - Wikipedia
ネットワークに接続されている全てのコンピュータに対して、IPアドレスと呼ばれる番号を付与し、その番号を用いて通信先の指定及び呼び出しを行う(この考え方は電話番号と似ている)
住所。だけど一意じゃない
「日本 〒100-8111 東京都千代田区千代田1−1」にも複数Computerが存在する。
Global addressとPrivate addressを使い分けている
Global addressにて、Internetで長距離Data輸送を行い、
Googleは8.8.8.8
最後はPrivate addressにて、Computerを特定する
192.168.xx.xx
https://gyazo.com/452aab1ef0dae1da2a17ff6fecf848d1
引用元)用語集「IPアドレスとは?」
https://gyazo.com/81ccee4b312e168803f88824959e0da9
引用元)勘違いしてない?IPアドレスとサブネットマスクの仕組みを図で再確認(2ページ目) | 日経クロステック(xTECH)
Global AddressとPrivate AddressはIP addressの値から瞬時に判断できる
参考)Private Addressか判断する方法
住所はわかった。
次は「その住所までたどり着くにあたってRouter(=交差点)でどの道を選べばいいか」の判断の話をする
Routerは中に「Routing Table」をもち、それとの照合で「Dataの横流し先」を決めている
ルーティングテーブル - Wikipedia
https://gyazo.com/e098f53a81b0c8a3ec00d0b72cc20c76
table:;Routing Table
~123.23.255.255 A
~200.12.255.255 B
~255.255.255.255 C
IP addressは(IPv4)の世界だと4つの数字(0~255)の組み合わせで表現される
数字の組み合わせであるためRouting Tableが単純
「どこに流すか?」の判断logicがsimpleなので、Routerが安価で作れる
この「Simpleである」はとても大事な話
from: ネットはTCP/IPにてなりたっている
TCPとIP。この2つの通信規格(protocol)の存在が、Internetを爆発的に普及させた
参考)インターネットを支えるTCP/IPの誕生から普及まで - JPNIC
「爆発的」とした要因は4つある
Open であること
仕様が公開されない独自規格や、参照に費用のかかる規格に比べると、 開発・実装のハードルが下がる
パケット通信 であること
回線交換と比べて、「たくさんの人が繋がる」のに適していた
End-to-End であること
複雑なことはなるべく端末側で行い、 ネットワーク(CableとRouterの仕組み)はSimpleに保った
Simple であること
「信頼された通信」のみを実装する。
「通信を傍受されないこと」などは他のprotocolに担当させた(参考:SSL通信)
結果として
インターネットを支えるTCP/IPの誕生から普及まで - JPNIC
TCP/IPの普及はLANの姿も変えることになりました。 当時、LAN内でのファイル共有には別のプロトコルが主流でしたが、 インターネットの普及に伴いLAN内でもTCP/IPを使うようになり、Windows、 Macintoshともども徐々にではありますが、TCP/IPの利用範囲が広がっていきます。 その結果、 2017年現在ではLAN内でもほぼTCP/IPのみが使われるという状況になっています。
これはすごいこと。
AppleのFirewire
ビデオ戦争におけるベータマックス、HD DVD
など。規格競争に負けると悲惨な末路を辿る
そもそもTCP/IPとは何か
IPとは
IP addressはComputer界の住所
さっくり言うと「Networkに繋がるすべてのComputerに住所(≒電話番号)をつける」仕組み
TCPとは
Transmission Control Protocol - Wikipedia
TCPは、アプリケーションプログラムと Internet Protocol (IP) の中間の層で通信サービスを提供する。すなわち、アプリケーションプログラムがIPを使って大きなデータの塊を送信したいという場合、直接そのデータをIPのサイズで分割して一連のIP要求を発行するのではなく、TCPに1度要求を発行するだけで、TCPにIPの詳細を任せることができる。
IPはパケットと呼ばれる情報の断片をやり取りする形で機能する。パケットは、ヘッダ部に本体が続く形で構成されるオクテット列である。ヘッダ部には、そのパケットの宛先があり、その宛先に到達するために中継で使用すべきルーターを指定することもある。本体にはIPが転送すべきデータが格納される。
ネットワークが混雑(輻輳)したり、トラフィックを負荷分散させようとしたり、その他ネットワークの予測できない振る舞いにより、IPパケットは喪失したり、重複したり、順序がばらばらで届いたりする。TCPはそれらの問題を検出し、喪失データの再送を要求し、データの順序を正しく並べ替え、さらにネットワークの混雑が起きにくくなるよう制御して他の問題が発生する可能性を低くする。TCPの受信側は、オクテット列の順序を元通りに再現すると、それをアプリケーションプログラムに渡す。したがってTCPは、アプリケーションに対してネットワークの詳細を隠蔽して抽象化しているといえる。
さっくり言うと「相手に届く前に紛失・改竄されないように、Dataの送り方を工夫する」仕組み
TCPとIPをsetで使うことで「数億~数十億の人が繋がるInternetにおいて、どんなに遠い相手でも、どんなに大きなDataでも、間違いなく届ける」ことができるようになる
ここで問題が発生する
TCP/IPは確かに速い。世界を繋いだ。
が、人には使いにくい
数字であることはComputerにとってメリット
人は無理。電話番号見て「誰々さんだ!」と思い出すのは期待してはいけない
ここでURL(domain)とDNSがあるからIP addressを覚えなくて良いと言う話になる
IP addressは数字だから安価&高速な通信回線が提供できる
が、行きたいweb pageのIP addressを覚えるのは現実的じゃない
IP addressを使えば、確かにweb siteは表示される
https://gyazo.com/585500794bcd1d95ba33dbce5c16a9d7
毎回覚えていられない
だから普段はURL(domain)を活用してwebsiteをみているはず
この時に使うのがDNS
DNS。Domain Name Server
scrapbox.io
https://scrapbox.io/inteltank/Network_~Computer%E3%81%A8Computer%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90%E3%82%82%E3%81%AE~
名前解決と呼ばれる「domain名に対応した IP address」を返却してくれるServer
https://gyazo.com/8081ba0369cf351b2799ac5b6b82a9d9
全てのURLは一度DNSにて「このdomainのIP addressはなに?」と確認されている
URLを入力された後の、「たどるnetwork経路」は以下のようになる
https://gyazo.com/66f479019eda7660245d5b54eaa93530
引用元)すぐわかる!DNSのしくみ / ドメインまるわかり.jp / JPRS
最初にDNSを訪問するのがPoint。
DNSが正常に動いていないと、Internetがつながらなくなる
コラム)ネットの遅さが改善されるかも?DNS serverの手動登録
コラム)DNSがないと、Routingが死ぬ
Routerから3つ(A,B,C)に分岐するとき
1.iconIP addressではなくURLdomain名そのままを利用する場合
https://gyazo.com/19c6c2095228884f9dd57163e6917847
table:Routing Table
facebook.com A
google.com B
inteltank.com B
... ...
... ...
amazon.com B
URL(domain)が増えるたびに
Routting tableに追記する必要がある
「serverまでどのrouteが最短か?」を予め計算し、世の中にある全てのRouterに記載する必要がある
現実的じゃないsawachin.icon
世界中にいくつのURLがあると思っているんだ
反映するのも大変
Routing Tableと実際の値を照合するのも大変
コラム)実は、IPにも2種類ある
IP address 枯渇問題とIPv6
IP address枯渇問題とは
「古くから利用されているIPv4で利用されるaddressに余分がなくなった」こと
2011年2月3日に枯渇している
IPアドレス枯渇問題 - Wikipedia
IP addressが枯渇すると通信ができない
TCP/IPプロトコルではIP addressが「住所」となる
IP addressが枯渇すると…「住所がないComputer」が生まれる
住所がないComputerは通信できない
このままじゃ通信できないので、色々工夫がされた
1.icon 新方式「IPv6」への移行
IPv4ではaddressが$ (2^8)^4(=42億)通りしか生み出せない
IPv6では$ (2^8)^6(=$ 2.8 \times 10^{14})通り生み出せる
しかし…IPv6には後方互換がないので「完全移行」するしかない
移行は仕切れないので…段階的にされている
Google,Amazonのようなところは IPv6とIPv4両方のaddressを持つ
IPv6のaddressを持つComputerとはIPv6で通信
持たない場合はIPv4で通信
2.iconIP addressの共同利用
Local IP addressを用いて、「1つのGlobal IP addressを共用」する
例えば、同じ会社/同じ家の人はInternetからは「同一住所」に見える
モデムごとに1つのGlobal IP addressが付与されるため
Local IP addressが違うことは、Internet(外)からは気にされない
3.iconDHCPにて、IP addressを動的に利用
DHCPとは1つのIP addressを「違う会社」「違う家」でも使い回す仕組み
ISPが「物理的に近い複数の家・会社に、必要な時だけIP addressを付与」している
つまり、時間帯によって「繋がる場所」が変わる
IP address 104.234.23.1にaccessしたとして
2020/8/31 13:00はsawachin.iconの家につながるけど
2020/9/1 14:00は違う人の家につながるかもしれない
IPv4よりIPv6の方が回線が安定する
IPv6は「直接Serverとやりとりする」ことができるのに対し
IPv4は「ISPが管理するServerを一度経由する」必要がある